package com.origin.niuke.slidingWindow;

/**
 * @author yzh
 * @version 1.0
 * @date 2022/4/25 21:47
 * 定义重复字符串是由两个相同的字符串首尾拼接而成，例如 abcabcabcabc 便是长度为6的一个重复字符串，
 * 而 abcbaabcba 则不存在重复字符串。
 * 给定一个字符串，请返回其最长重复子串的长度。
 * 若不存在任何重复字符子串，则返回 0 。
 * 本题中子串的定义是字符串中一段连续的区间
 * 算法：滑动窗口
 * 遍历重复字符串的大小
 * 两个滑动窗口
 */
public class 最长重复子串 {

    public int solve (String a) {
        int len = a.length(), cnt = 0;
        for (int i = len / 2; i > 0; i--) {
            for (int j = 0; j < len - i; j++) {
                if (a.charAt(j) == a.charAt(j + i)) ++cnt;
                else cnt = 0;
                if (cnt == i) return 2 * i;
            }
        }
        return 0;
    }

}
